package com.centsuse.my_redis.config.serializers;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.redisson.codec.JsonJacksonCodec;

/**
 * @author bobo
 */
public class CustomJsonJacksonCodec extends JsonJacksonCodec {

    public CustomJsonJacksonCodec() {
        super(createCustomObjectMapper());
        // 获取并修改父类中的ObjectMapper
        ObjectMapper mapper = super.getObjectMapper();
        // 清除可能存在的默认类型解析器设置
        mapper.setDefaultTyping(null);
        // 确保没有激活默认类型注入
        // mapper.activateDefaultTyping(...); // 不应调用
    }

    private static ObjectMapper createCustomObjectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        // 关键配置：禁用默认类型信息
        // mapper.activateDefaultTyping(...); // 确保没有调用此方法或类似功能
        // 或者，更明确地设置：仅当显式使用@JsonTypeInfo注解时才包含类型信息
        mapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false);
        mapper.setAnnotationIntrospector(new com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector());
        // 可根据需要添加其他配置，如日期格式等
        return mapper;
    }
}